Skip to content

chore: release - #382

Merged
benbrandt merged 1 commit into
mainfrom
release-plz-2026-09-28T13-22-55Z
Oct 6, 2026
Merged

benbrandt merged 1 commit into
mainfrom
release-plz-2026-09-28T13-22-55Z

Conversation

@acp-release-bot

@acp-release-bot acp-release-bot Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

🤖 New release

  • agent-client-protocol-derive: 2.2.0 -> 3.0.0
  • agent-client-protocol: 2.2.0 -> 3.0.0 (✓ API compatible changes)
  • agent-client-protocol-polyfill: 2.2.0 -> 3.0.0 (✓ API compatible changes)
  • agent-client-protocol-rmcp: 3.1.1 -> 4.0.0 (✓ API compatible changes)
  • agent-client-protocol-trace-viewer: 2.2.0 -> 3.0.0 (✓ API compatible changes)
  • agent-client-protocol-conductor: 2.2.0 -> 3.0.0 (✓ API compatible changes)
  • agent-client-protocol-http: 2.2.0 -> 3.0.0 (⚠ API breaking changes)
  • agent-client-protocol-cookbook: 2.2.0 -> 3.0.0 (✓ API compatible changes)

⚠ agent-client-protocol-http breaking changes

--- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] ---

Description:
A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/enum_marked_non_exhaustive.ron

Failed in:
  enum CorsOptions in /tmp/.tmpNrIbG3/rust-sdk/src/agent-client-protocol-http/src/server.rs:124

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/enum_variant_added.ron

Failed in:
  variant HttpClientError:UnsupportedScheme in /tmp/.tmpNrIbG3/rust-sdk/src/agent-client-protocol-http/src/client.rs:34
  variant HttpClientError:WebSocketRequiresBuilder in /tmp/.tmpNrIbG3/rust-sdk/src/agent-client-protocol-http/src/client.rs:38

--- failure struct_marked_non_exhaustive: struct marked #[non_exhaustive] ---

Description:
A public struct has been marked #[non_exhaustive], which will prevent it from being constructed using a struct literal outside of its crate. It previously had no private fields, so a struct literal could be used to construct it outside its crate.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/struct_marked_non_exhaustive.ron

Failed in:
  struct ServerOptions in /tmp/.tmpNrIbG3/rust-sdk/src/agent-client-protocol-http/src/server.rs:47
Changelog

agent-client-protocol-derive

3.0.0 - 2026-10-06

Other

  • prepare v3 package metadata and release guidance (#404)

agent-client-protocol

3.0.0 - 2026-10-06

Added

  • (acp) forward unstable subagents schema support (#402)
  • (config) [breaking] make public configuration APIs extensible (#403)
  • (acp) [breaking] make native transports and schema support opt-in (#397)
  • (acp) [breaking] adopt request-scoped MCP binding (#388)
  • (acp) make schemars optional (#373)

Fixed

  • (acp) allow singleton role IDs without Default (#400)
  • (acp) cancel abandoned function-tool invocations (#387)
  • (acp) [breaking] preserve connection lifetimes and graceful drain (#385)
  • (acp) [breaking] preserve protocol-neutral raw JSON-RPC errors (#384)

Other

  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)
  • reconcile combined breaking release migrations (#395)
  • Simplify logs in example (#386)

Changed

  • Mark AcpAgentConfig non-exhaustive for future configuration extensions.
    Existing private fields, constructors, fluent methods, getters, and JSON
    behavior are unchanged; an executable is still required.
    See the config API migration guide.
  • Breaking (unstable MCP): adopt schema 1.10.1's request-scoped
    mcp/message(serverId, requestId, method, params) binding and independent
    inner MCP result/error carriers. Remove MCP connect/disconnect and connection
    IDs. Native MCP supports 2026-07-28 without an initialization prerequisite.
    See the native binding migration guide.
  • Breaking: RawJsonRpcMessage::Response carries RawJsonRpcResponse with
    a boxed RawJsonRpcError, preserving numeric codes, omitted/null data, and
    error extension fields without ACP interpretation. Raw adapters must use the
    new response type. Typed ACP consumers still receive Error; conversion to
    ACP is explicit through RawJsonRpcError::into_acp_error.
  • Breaking: ConnectTo::into_channel_and_future now returns
    (Channel, Option<ConnectionDriver>) instead of a boxed future. Some owns
    connection work; a passive endpoint returns None. Custom overrides and
    low-level callers must handle absence explicitly; wrappers should preserve
    the original optional driver rather than erase its lifecycle metadata.
    See the connection-driver migration guide.
  • Breaking: enable no Cargo features by default. JSON Schema generation and
    typed MCP tool helpers require schemars; native subprocess support requires
    process, and the native Stdio adapter requires stdio. The two native
    features are independent and expose LineDirection with either enabled.
    Protocol serialization and generic transports remain available by default.
    See Cargo Features for migration examples.
  • Request the futures executor only for tests and doctests, not production
    connections. Internal test utilities no longer implicitly enable unrelated
    unstable protocol features or JSON Schema generation.

Added

  • Expose the schema's unstable_subagents feature, independently and through
    unstable. Subagent updates use the existing v1 and draft-v2 session
    notification routes; applications remain responsible for subagent behavior.
  • Add reusable native MCP services with request-scoped metadata, notification
    authority, and cancellation. Supervise owned operation cleanup through ACP
    shutdown without changing generic frame queues or task limits.
  • Add an owned-only, awaitable ConnectionDriver. Passive endpoints have no
    driver, so absence cannot be mistaken for a successful completed future.
  • Add ConnectionDriver::with_finish(future, finish) and request_finish() for
    custom adapters to request graceful shutdown separately from awaiting
    completion. Requests are idempotent; the one-shot hook signals the adapter
    once, and its future must drain, flush, and close accepted output before
    reporting success. Already-requested drivers retain that contract on handoff.
  • Add ConnectionDriver::map_future for tracing, error annotation, and
    completion cleanup without losing finish capability or requested state.
  • Add an opt-in schemars feature that forwards JSON Schema support to the
    schema crate and gates the typed MCP tool helpers. Custom MCP servers and
    independently enabled unstable protocol features remain available without it.

Fixed

  • Allow custom roles without a Default implementation to construct their
    singleton RoleId.
  • Keep recoverable session-local runner failures from cancelling unrelated native
    MCP registrations or sealing connection-wide operation admission. Scoped sibling
    runners remain driven through their own cleanup.
  • Destroy and acknowledge cancelled queued mutable-tool calls independently of an
    active invocation, so cancelling a call or removing its provider does not wait
    for another registration's unrelated work.
  • Cancel running function-backed MCP tool futures when their result receiver is
    dropped, skip cancelled queued calls before invoking the tool closure, and keep
    mutable and concurrent runners usable after a caller leaves or result delivery
    fails. This drops the user future; it does not join operation-level async cleanup.
  • Preserve both directions of passive channel bridges after a write
    half-close, allowing a final reverse-direction response.
  • Drain accepted output when an owned component finishes, including through
    line and byte-stream adapters, without requiring unrelated remote input to
    close. Ready component and I/O failures remain authoritative during drain.
  • Drain routable queued output on successful Builder::connect_with
    foreground completion and finish cooperative physical transports without
    starting queued application tasks solely for physical drain. Preserve the
    inherited underway-close-callback cleanup phase. Fail unresolved
    request-readiness gates rather than waiting indefinitely or publishing those
    requests after shutdown.
  • Close and drain the incoming producer boundary when owned transport work
    completes, including when escaped senders remain alive.
  • Forward physical write-half shutdown through byte-stream adapters so split
    streams can receive a final reverse response after output EOF. Preserve
    partial-write, flush, pending-shutdown, and close-error behavior.
  • Discard input to a completed foreground during physical finish, including
    frames already queued at normalization, without losing genuine I/O errors
    or cancelling accepted output.
  • Apply one ownership-aware drain rule to protocol connectors and agent/proxy
    routers. Request cooperative finish after initialization rejection or owned
    foreground completion; do not indefinitely join opposed opaque work.
  • Do not begin late application delivery or close callbacks after finite
    foreground success. An underway close callback completes before output is
    sealed, so clean EOF during physical drain cannot turn a late callback send
    into a closed-queue failure that cancels accepted output.

agent-client-protocol-polyfill

3.0.0 - 2026-10-06

Added

  • (acp) [breaking] adopt request-scoped MCP binding (#388)

Fixed

  • (polyfill) bound request-scoped HTTP resources (#389)
  • (acp) [breaking] preserve connection lifetimes and graceful drain (#385)
  • (acp) [breaking] preserve protocol-neutral raw JSON-RPC errors (#384)

Other

  • omit peer-controlled HTTP responses from test failure logs (#405)
  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)
  • reconcile combined breaking release migrations (#395)

Breaking changes

  • Replace the native MCP HTTP bridge with MCP 2026-07-28-only request-scoped
    HTTP POSTs, fresh logical request IDs, per-request notifications, and
    cancellation when the HTTP response stream is dropped. Remove the connection
    handshake and legacy MCP session/initialization behavior. There is no fallback
    to older MCP revisions; downstream HTTP clients must support MCP 2026-07-28.
    See the bridge guide.

Changed

  • Limit Axum to HTTP1/Tokio, JSON responses, and tracing/tower-log observability;
    remove unused extractors and the unused futures executor feature.
  • Use one loopback listener per ACP connection with server-addressed URLs and
    server-specific HMAC bearer credentials in declaration headers. Validate
    authentication and Origin before reading request bodies.
  • Re-export native tool schemas without transport-only x-mcp-header
    annotations, preserving argument properties, examples, and defaults.
  • Bound HTTP admission to 64 outstanding response bodies, each operation's
    notification queue to 16 events and 256 KiB, and request/terminal payloads
    to 1 MiB. Hold admission through body consumption or drop, including error
    responses. Overflow reports a resource error and cancels only that operation.

Fixed

  • Preserve raw JSON-RPC error codes, omitted/null data, and error extension
    fields in the MCP HTTP bridge instead of interpreting them as ACP errors.
  • Keep inner MCP outcomes separate from outer ACP binding failures, preserve
    external JSON-RPC IDs, and rewrite only the standard subscription metadata.

agent-client-protocol-rmcp

4.0.0 - 2026-10-06

Added

  • (acp) [breaking] make native transports and schema support opt-in (#397)
  • (acp) [breaking] adopt request-scoped MCP binding (#388)
  • (rmcp) [breaking] upgrade integration to rmcp 3.4
  • (acp) make schemars optional (#373)

Other

  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)
  • reconcile combined breaking release migrations (#395)

Breaking changes

  • Native attachments use request-scoped MCP 2026-07-28 and inner outcome
    carriers, replacing the old mcp/connect / mcp/disconnect binding without
    a legacy fallback. from_rmcp lazily creates one reusable service for native
    requests; standalone connections retain per-connection factories and rmcp
    protocol negotiation. See the
    native binding migration
    and request-scoped MCP guide.
  • Release agent-client-protocol-rmcp 4.x together with core ACP 3.x and the
    public rmcp dependency upgrade from 2.x to 3.4. Migrate both public
    dependencies together. Services supplied to McpServer::from_rmcp must use
    rmcp 3.x; custom transports and low-level callers must follow the core
    connection-driver migration.
  • Adapt tool handlers to rmcp's CallToolResponse, use ServerConfig in place
    of the deprecated ServerInfo alias, and remove legacy tool-execution
    metadata. See the migration guide.

Added

  • Integration coverage for MCP 2026-07-28 requests without initialization,
    discovery, per-request metadata/version validation, and MRTR results from
    caller-supplied rmcp services.
  • Add supervised native execution, request-scoped cancellation/notification
    context, borrowed tool cleanup acknowledgments, and a runnable direct ACP
    example. Independent unstable_protocol_v2 and unstable_mcp_over_acp
    features forward their respective core gates; the v2 native example
    explicitly requires both.

Changed

  • Request tokio-util's cancellation-token support explicitly for native MCP
    attachments. Keep production compatibility adapters and JSON Schema tool
    builders; remove unused JSON log formatting from example dependencies.
  • Keep Tokio stdio, the multithreaded runtime, and rmcp macros out of production
    dependencies. Native examples and tests enable them separately. The integration
    library now compiles for wasm32-wasip1 and wasm32-wasip2 with default or all
    features; applications still supply a compatible runtime and host transport.

agent-client-protocol-trace-viewer

3.0.0 - 2026-10-06

Other

  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)

Changed

  • Limit Axum to HTTP1/Tokio and tracing/tower-log observability. The viewer
    serializes responses directly and does not need JSON, form, or query
    extractors, matched paths, or original URI extraction.

agent-client-protocol-conductor

3.0.0 - 2026-10-06

Added

  • (acp) [breaking] make native transports and schema support opt-in (#397)
  • (acp) [breaking] adopt request-scoped MCP binding (#388)
  • (deps) bump the minor group with 14 updates (#381)
  • (rmcp) [breaking] upgrade integration to rmcp 3.4

Fixed

  • avoid sensitive transport logs and redact trace URL credentials (#401)
  • (polyfill) bound request-scoped HTTP resources (#389)
  • (acp) [breaking] preserve connection lifetimes and graceful drain (#385)
  • (acp) [breaking] preserve protocol-neutral raw JSON-RPC errors (#384)

Other

  • omit peer-controlled HTTP responses from test failure logs (#405)
  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)

Changed

  • Keep the Tokio/futures compatibility adapter in dev dependencies and omit
    unused futures executor and JSON logging features from production dependencies.
  • Request JSON Schema generation and rmcp's native MCP-over-ACP attachment
    support explicitly for integration tests. Enable the polyfill's draft-v2
    support only with unstable_protocol_v2; test utilities no longer implicitly
    enable unrelated unstable protocol features.

Fixed

  • Redact HTTP URL userinfo and recognized credential query values in trace
    copies, including encoded keys and repeated parameters. Preserve explicit
    message recordings and original transport messages.
  • Trace inner MCP errors separately from outer ACP binding failures and redact
    HTTP declaration credentials without modifying transport messages.
  • Retain raw JSON-RPC error codes, omitted/null data, and error extension
    fields in traced response payloads. Trace method and parameter normalization
    is unchanged.

agent-client-protocol-http

3.0.0 - 2026-10-06

Added

  • (config) [breaking] make public configuration APIs extensible (#403)

Fixed

  • (http) [breaking] honor custom configuration with safe WebSocket handshakes (#333)
  • avoid sensitive transport logs and redact trace URL credentials (#401)
  • (http) gracefully finish client transports after builder completion (#396)
  • (acp) [breaking] preserve connection lifetimes and graceful drain (#385)
  • (acp) [breaking] preserve protocol-neutral raw JSON-RPC errors (#384)

Other

  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)

Breaking changes

  • WebSocket URLs passed to HttpClient::with_client or
    with_endpoint_and_client now return WebSocketRequiresBuilder before network
    I/O. Migrate to builder(...).configure_http(...).build() or
    builder_with_endpoint(...) so the transport can enforce connection policies.
    See the
    migration guide.
  • Unconfigured WebSockets now share reqwest's proxy discovery and TLS verification
    defaults, replacing direct connections and bundled WebPKI roots. Environment
    proxies, enabled system-proxy discovery, and platform certificate verification
    can change routing and trust. Use no_proxy() and explicit tls_certs_only
    roots when those defaults are not appropriate.

Deprecated

  • Retain HttpClient::with_client and with_endpoint_and_client as deprecated
    HTTP/SSE compatibility wrappers with unchanged path handling.
    from_http_client(exact_endpoint, client) preserves shared reqwest clients for
    HTTP/SSE; its endpoint is exact and does not append /acp.

Changed

  • Document the caller constraint against setting reserved WebSocket handshake
    headers through reqwest::Proxy::headers. Plain-WS proxy headers can overwrite
    SDK request headers after assembly; opaque proxy configuration cannot be
    inspected or rejected at build time. Cover normal plain-WS proxy headers and
    fail-closed accept validation after a proxy key override.
  • Breaking: make ServerOptions and CorsOptions non-exhaustive.
    Replace server option literals (including struct update syntax) with
    ServerOptions::default().with_path(...).with_cors(...).with_health_endpoint(...);
    existing fields remain public. Downstream CORS matches need a wildcard arm.
    Defaults and runtime policies are unchanged. See the
    config API migration guide.
  • Limit Axum to HTTP1/Tokio, WebSockets, and tracing/tower-log observability.
    Remove unused Axum macros and extractors; JSON extraction is enabled only for
    tests. Drop unused test-utility and tracing-subscriber dev dependencies and
    the unused production futures executor feature.
  • Adapt HttpClient's ConnectTo conversion to the core SDK's breaking
    optional ConnectionDriver return type. Channels and HTTP framing remain
    unchanged; no new resource limits are introduced.

Fixed

  • Apply custom headers, TLS, proxies, DNS, and timeouts to WebSocket handshakes.
    Enforce HTTP/1.1 and disable redirects for WebSockets without changing HTTP/SSE
    policies. Validate the upgrade response before sending queued ACP data, and
    reject unsupported subprotocols and extensions.
  • Replace HTTP POST, SSE, and WebSocket payload diagnostics with bounded
    metadata. Do not log peer-controlled IDs, close reasons, or transport error
    text (which may include credentials or message content).
  • Cooperatively finish HTTP client connections created through the public builder:
    drain accepted ordered POSTs and WebSocket frames before physical cleanup, reject
    output from escaped transport senders, and report transport failures during shutdown.
  • Preserve raw JSON-RPC error codes, omitted versus null data, and error
    extension fields across HTTP/SSE and WebSocket transports, using the core
    SDK's new RawJsonRpcResponse representation.
  • Preserve HTTP channel pumps when an agent-factory endpoint has no owned
    driver; absence is not agent completion while its transport remains open.
  • On active agent completion, reject further output from escaped sender clones
    and drain accepted frames before removing the connection and closing its
    streams, without waiting for those clones to be dropped.
  • Keep router cancellation owned while natural cleanup awaits its drain.
    Explicit shutdown no longer detaches a taken router task or retains the
    connection through that orphaned task.

agent-client-protocol-cookbook

3.0.0 - 2026-10-06

Added

  • (acp) [breaking] make native transports and schema support opt-in (#397)
  • (acp) [breaking] adopt request-scoped MCP binding (#388)
  • (rmcp) [breaking] upgrade integration to rmcp 3.4

Other

  • prepare v3 package metadata and release guidance (#404)
  • slim dependency features and CI validation (#399)

Changed

  • Request rmcp's native MCP-over-ACP attachment feature explicitly for the
    compiled recipes. Keep subprocess support for the AcpAgent recipe, but
    remove unused core stdio and futures executor features from dev dependencies.


This PR was generated with release-plz.

@acp-release-bot
acp-release-bot Bot force-pushed the release-plz-2026-09-28T13-22-55Z branch 6 times, most recently from 237c1ea to ef44726 Compare October 5, 2026 13:30
@acp-release-bot
acp-release-bot Bot force-pushed the release-plz-2026-09-28T13-22-55Z branch 12 times, most recently from 7457938 to 06c5774 Compare October 6, 2026 16:58
@acp-release-bot
acp-release-bot Bot force-pushed the release-plz-2026-09-28T13-22-55Z branch from 06c5774 to 7487877 Compare October 6, 2026 17:04
@benbrandt
benbrandt merged commit 9821e73 into main Oct 6, 2026
14 checks passed
@benbrandt
benbrandt deleted the release-plz-2026-09-28T13-22-55Z branch October 6, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant